package com.blog.cmrpersonalblog.dto.user.request;

import com.blog.cmrpersonalblog.common.BasePageRequest;
import lombok.Data;
import lombok.EqualsAndHashCode;

/**
 * 用户查询请求DTO
 */
@Data
@EqualsAndHashCode(callSuper = true)
public class UserQueryRequest extends BasePageRequest {

    /**
     * 用户名（模糊查询）
     */
    private String userName;

    /**
     * 用户昵称（模糊查询）
     */
    private String nickName;

    /**
     * 邮箱（模糊查询）
     */
    private String email;

    /**
     * 手机号码（模糊查询）
     */
    private String phonenumber;

    /**
     * 状态（0=禁用，1=启用）
     */
    private Integer status;

    /**
     * 角色ID（精确查询）
     */
    private Long roleId;

    /**
     * 性别
     */
    private String sex;

    /**
     * 构造函数，设置默认排序
     */
    public UserQueryRequest() {
        super();
        setDefaultSort("user_id", "asc");
    }

    /**
     * 验证排序字段是否有效
     */
    public boolean isValidSortField() {
        String field = getSortField();
        if (field == null) {
            return false;
        }
        return field.equals("user_id") ||
               field.equals("user_name") ||
               field.equals("nick_name") ||
               field.equals("email") ||
               field.equals("phonenumber") ||
               field.equals("status") ||
               field.equals("create_time") ||
               field.equals("update_time");
    }

    /**
     * 获取安全的排序字段
     */
    public String getSafeSortField() {
        return isValidSortField() ? getSortField() : "user_id";
    }
}

